Skip to Content

语音合成大模型API列表

根据具体场景选择合适的语音合成大模型API。 :::warning 大模型音色都推荐接入V3接口,时延上的表现会更好 :::

| | | | | \

接口推荐场景接口功能文档链接
wss://openspeech.bytedance.com/api/v3/tts/bidirection WebSocket协议,实时交互场景,支持文本实时流式输入,流式输出音频。语音合成、声音复刻、混音V3 WebSocket双向流式文档 
wss://openspeech.bytedance.com/api/v3/tts/unidirectional/streamWebSocket协议,一次性输入合成文本,流式输出音频。语音合成、声音复刻、混音V3 WebSocket单向流式文档 
https://openspeech.bytedance.com/api/v3/tts/unidirectional HTTP协议,一次性输入全部合成文本,流式输出音频。语音合成、声音复刻、混音V3 HTTP Chunked单向流式文档 
https://openspeech.bytedance.com/api/v3/tts/unidirectional/sseHTTP协议,一次性输入全部合成文本,流式输出音频。语音合成、声音复刻、混音V3 Server Sent Events(SSE)单向流式文档 
wss://openspeech.bytedance.com/api/v1/tts/ws_binary不推荐,​WebSocket协议,一次性输入合成文本,流式输出音频。语音合成、声音复刻、不支持混音V1 WebSocket单向流式接口文档 
https://openspeech.bytedance.com/api/v1/tts不推荐,​HTTP协议,一次性输入合成文本,一次性输出音频。语音合成、声音复刻、不支持混音V1 HTTP非流式接口文档 

WebSocket

使用账号申请部分申请到的 appid&access_token 进行调用 文本一次性送入,后端边合成边返回音频数据

1. 接口说明

接口地址为wss://openspeech.bytedance.com/api/v1/tts/ws_binary

2. 身份认证

认证方式使用 Bearer Token,在请求的 header 中加上"Authorization": "Bearer; {token}",并在请求的 json 中填入对应的 appid。 :::warning Bearer 和 token 使用分号 ; 分隔,替换时请勿保留{} ::: AppID/Token/Cluster 等信息可参考 控制台使用FAQ-Q1

3. 请求方式

3.1 二进制协议

报文格式(Message format)

![Image](https://lf3-volc-editor.volccdn.com/obj/volcfe/sop-public/upload_cc1c1cdd61bf29f5bde066dc693dcb2b.png  =1816x) 所有字段以 Big Endian(大端序)  的方式存储。 字段描述

| | | | \

字段 Field (大小, 单位 bit)描述 Description值 Values
协议版本(Protocol version) (4)可能会在将来使用不同的协议版本,所以这个字段是为了让客户端和服务器在版本上保持一致。0b0001 - 版本 1 (目前只有版本 1)
报头大小(Header size) (4)header 实际大小是 header size value x 4 bytes.\
这里有个特殊值 0b1111 表示 header 大小大于或等于 60(15 x 4 bytes),也就是会存在 header extension 字段。0b0001 - 报头大小 = 4 (1 x 4)
0b0010 - 报头大小 = 8 (2 x 4)
0b1010 - 报头大小 = 40 (10 x 4)
0b1110 - 报头大小 = 56 (14 x 4)
0b1111 - 报头大小为 60 或更大; 实际大小在 header extension 中定义
消息类型(Message type) (4)定义消息类型。0b0001 - full client request.
~~0b1001~~ - full server response(弃用).
0b1011 - Audio-only server response (ACK).
0b1111 - Error message from server (例如错误的消息类型,不支持的序列化方法等等)
Message type specific flags (4)flags 含义取决于消息类型。\
具体内容请看消息类型小节.
序列化方法(Message serialization method) (4)定义序列化 payload 的方法。\
注意:它只对某些特定的消息类型有意义 (例如 Audio-only server response 0b1011 就不需要序列化).0b0000 - 无序列化 (raw bytes)
0b0001 - JSON
0b1111 - 自定义类型, 在 header extension 中定义
压缩方法(Message Compression) (4)定义 payload 的压缩方法。\
Payload size 字段不压缩(如果有的话,取决于消息类型),而且 Payload size 指的是 payload 压缩后的大小。\
Header 不压缩。0b0000 - 无压缩
0b0001 - gzip
0b1111 - 自定义压缩方法, 在 header extension 中定义
保留字段(Reserved) (8)保留字段,同时作为边界 (使整个报头大小为 4 个字节).0x00 - 目前只有 0

消息类型详细说明

目前所有 TTS websocket 请求都使用 full client request 格式,无论”query”还是”submit”。

Full client request

  • Header size为b0001(即 4B,没有 header extension)。
  • Message type为b0001.
  • Message type specific flags 固定为b0000.
  • Message serialization method为b0001JSON。字段参考上方表格。
  • 如果使用 gzip 压缩 payload,则 payload size 为压缩后的大小。

Audio-only server response

  • Header size 应该为b0001.
  • Message type为b1011.
  • Message type specific flags 可能的值有:
    • b0000 - 没有 sequence number.
    • b0001 - sequence number > 0.
    • b0010orb0011 - sequence number < 0,表示来自服务器的最后一条消息,此时客户端应合并所有音频片段(如果有多条)。
  • Message serialization method为b0000(raw bytes).

4.注意事项

  • 每次合成时reqid这个参数需要重新设置,且要保证唯一性(建议使用uuid.V4生成)
  • websocket demo中单条链接仅支持单次合成,若需要合成多次,需自行实现。每次创建websocket连接后,按顺序串行发送每一包。一次合成结束后,可以发送新的合成请求。
  • operation需要设置为submit才是流式返回
  • 在 websocket 握手成功后,会返回这些 Response header
  • 不支持”豆包语音合成模型2.0”的音色 ,比如:“zh_female_vv_uranus_bigtts”,如需使用推荐使用v3 接口

| | | | \

Key说明Value 示例
X-Tt-Logid服务端返回的 logid,建议用户获取和打印方便定位问题202407261553070FACFE6D19421815D605

5.调用示例

return (<Tabs> <Tabs.TabPane title="Python调用示例" key="buVUUlzaRC"><RenderMd content={`<span id="fccb89b1"></span> ### 前提条件 * 调用之前,您需要获取以下信息: * \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。 <span id="824abc9d"></span> ### Python环境 * Python:3.9版本及以上。 * Pip:25.1.1版本及以上。您可以使用下面命令安装。 \`\`\`Bash python3 -m pip install --upgrade pip \`\`\` <span id="5cbec8af"></span> ### 下载代码示例 <Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/90fc1f44eaac49f0b4e2cbabdaee8010~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment> <span id="44d95afb"></span> ### 解压缩代码包,安装依赖 \`\`\`Bash mkdir -p volcengine_binary_demo tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo cd volcengine_binary_demo python3 -m venv .venv source .venv/bin/activate python3 -m pip install --upgrade pip pip3 install -e . \`\`\` <span id="fdf69422"></span> ### 发起调用 > \`<appid>\`替换为您的APP ID。 > \`<access_token>\`替换为您的Access Token。 > \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。 \`\`\`Bash python3 examples/volcengine/binary.py --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "你好,我是火山引擎的语音合成服务。这是一个美好的旅程。" \`\`\` `}></RenderMd></Tabs.TabPane> <Tabs.TabPane title="Java调用示例" key="bfjarx0zlZ"><RenderMd content={`<span id="e0bca07e"></span> ### 前提条件 * 调用之前,您需要获取以下信息: * \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。 <span id="5f338843"></span> ### Java环境 * Java:21版本及以上。 * Maven:3.9.10版本及以上。 <span id="96af51fa"></span> ### 下载代码示例 <Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/ba78519b2dc0459fb7a6935b63775c66~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment> <span id="8e0ecd00"></span> ### 解压缩代码包,安装依赖 \`\`\`Bash mkdir -p volcengine_binary_demo tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo cd volcengine_binary_demo \`\`\` <span id="fa0a6230"></span> ### 发起调用 > \`<appid>\`替换为您的APP ID。 > \`<access_token>\`替换为您的Access Token。 > \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。 \`\`\`Bash mvn compile exec:java -Dexec.mainClass=com.speech.volcengine.Binary -DappId=<appid> -DaccessToken=<access_token> -Dvoice=<voice_type> -Dtext="**你好**,我是豆包语音助手,很高兴认识你。这是一个愉快的旅程。" \`\`\` `}></RenderMd></Tabs.TabPane> <Tabs.TabPane title="Go调用示例" key="s8zQJ7cCr3"><RenderMd content={`<span id="2733f4d4"></span> ### 前提条件 * 调用之前,您需要获取以下信息: * \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。 <span id="ee9617a6"></span> ### Go环境 * Go:1.21.0版本及以上。 <span id="cf9bb2bf"></span> ### 下载代码示例 <Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/c553a4a4373840d4a4870a1ef2a4e494~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment> <span id="363963c4"></span> ### 解压缩代码包,安装依赖 \`\`\`Bash mkdir -p volcengine_binary_demo tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo cd volcengine_binary_demo \`\`\` <span id="f0acb02c"></span> ### 发起调用 > \`<appid>\`替换为您的APP ID。 > \`<access_token>\`替换为您的Access Token。 > \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。 \`\`\`Bash go run volcengine/binary/main.go --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "**你好**,我是火山引擎的语音合成服务。" \`\`\` `}></RenderMd></Tabs.TabPane> <Tabs.TabPane title="C#调用示例" key="Thg5rLaSjq"><RenderMd content={`<span id="c60c1d5f"></span> ### 前提条件 * 调用之前,您需要获取以下信息: * \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。 <span id="cf2199fe"></span> ### C#环境 * .Net 9.0版本。 <span id="f7e91692"></span> ### 下载代码示例 <Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/a95ff3e7604d4bb4ade8fb49e110fef5~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment> <span id="f9131897"></span> ### 解压缩代码包,安装依赖 \`\`\`Bash mkdir -p volcengine_binary_demo tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo cd volcengine_binary_demo \`\`\` <span id="5834585b"></span> ### 发起调用 > \`<appid>\`替换为您的APP ID。 > \`<access_token>\`替换为您的Access Token。 > \`<voice_type>\`替换为您预期使用的音色ID,例如\`zh_female_cancan_mars_bigtts\`。 \`\`\`Bash dotnet run --project Volcengine/Binary/Volcengine.Speech.Binary.csproj -- --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "**你好**,这是一个测试文本。我们正在测试文本转语音功能。" \`\`\` `}></RenderMd></Tabs.TabPane> <Tabs.TabPane title="TypeScript调用示例" key="p1GEs3rWU7"><RenderMd content={`<span id="8b865031"></span> ### 前提条件 * 调用之前,您需要获取以下信息: * \`<appid>\`:使用控制台获取的APP ID,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<access_token>\`:使用控制台获取的Access Token,可参考 [控制台使用FAQ-Q1](https://www.volcengine.com/docs/6561/196768#q1%EF%BC%9A%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%88%B0%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0appid%EF%BC%8Ccluster%EF%BC%8Ctoken%EF%BC%8Cauthorization-type%EF%BC%8Csecret-key-%EF%BC%9F)。 * \`<voice_type>\`:您预期使用的音色ID,可参考 [大模型音色列表](https://www.volcengine.com/docs/6561/1257544)。 <span id="e7697c4e"></span> ### node环境 * node:v24.0版本及以上。 <span id="03fe45f1"></span> ### 下载代码示例 <Attachment link="https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/12ef1b1188a84f0c8883a0114da741ad~tplv-goo7wpa0wc-image.image" name="volcengine_binary_demo.tar.gz" ></Attachment> <span id="13e8a71a"></span> ### 解压缩代码包,安装依赖 \`\`\`Bash mkdir -p volcengine_binary_demo tar xvzf volcengine_binary_demo.tar.gz -C ./volcengine_binary_demo cd volcengine_binary_demo npm install npm install -g typescript npm install -g ts-node \`\`\` <span id="0c57973f"></span> ### 发起调用 > \`<appid>\`替换为您的APP ID。 > \`<access_token>\`替换为您的Access Token。 > \`<voice_type>\`替换为您预期使用的音色ID,例如\`<voice_type>\`。 \`\`\`Bash npx ts-node src/volcengine/binary.ts --appid <appid> --access_token <access_token> --voice_type <voice_type> --text "**你好**,我是火山引擎的语音合成服务。" \`\`\` `}></RenderMd></Tabs.TabPane></Tabs>);

参数列表

请求参数

| | | | | | | \

字段含义层级格式必需备注
app应用相关配置1dict
appid应用标识2string需要申请
token应用令牌2string无实际鉴权作用的Fake token,可传任意非空字符串
cluster业务集群2stringvolcano_tts
user用户相关配置1dict
uid用户标识2string可传任意非空字符串,传入值可以通过服务端日志追溯
audio音频相关配置1dict
voice_type音色类型2string
emotion音色情感2string设置音色的情感。示例:“emotion”: “angry”
注:当前仅部分音色支持设置情感,且不同音色支持的情感范围存在不同。
详见:大模型语音合成API-音色列表-多情感音色 
enable_emotion开启音色情感2bool是否可以设置音色情感,需将enable_emotion设为true
示例:“enable_emotion”: True
emotion_scale情绪值设置2float调用emotion设置情感参数后可使用emotion_scale进一步设置情绪值,范围1~5,不设置时默认值为4。
注:理论上情绪值越大,情感越明显。但情绪值1~5实际为非线性增长,可能存在超过某个值后,情绪增加不明显,例如设置3和5时情绪值可能接近。
encoding音频编码格式2stringwav / pcm / ogg_opus / mp3,默认为 pcm
注意:wav 不支持流式
speed_ratio语速2float[0.1,2],默认为 1,通常保留一位小数即可
rate音频采样率2int默认为 24000,可选8000,16000
bitrate比特率2int单位 kb/s,默认160 kb/s
注:
bitrate只针对MP3格式,wav计算比特率跟pcm一样是 比特率 (bps) = 采样率 × 位深度 × 声道数
目前大模型TTS只能改采样率,所以对于wav格式来说只能通过改采样率来变更音频的比特率
explicit_language明确语种2string仅读指定语种的文本
精品音色和 ICL 声音复刻场景:
* 不给定参数,正常中英混
* crosslingual 启用多语种前端(包含zh/en/ja/es-ms/id/pt-br
* zh-cn 中文为主,支持中英混
* en 仅英文
* ja 仅日文
* es-mx 仅墨西
* id 仅印尼
* pt-br 仅巴葡
DIT 声音复刻场景:
当音色是使用model_type=2训练的,即采用dit标准版效果时,建议指定明确语种,目前支持:
* 不给定参数,启用多语种前端zh,en,ja,es-mx,id,pt-br,de,fr
* zh,en,ja,es-mx,id,pt-br,de,fr 启用多语种前端
* zh-cn 中文为主,支持中英混
* en 仅英文
* ja 仅日文
* es-mx 仅墨西
* id 仅印尼
* pt-br 仅巴葡
* de 仅德语
* fr 仅法语
当音色是使用model_type=3训练的,即采用dit还原版效果时,必须指定明确语种,目前支持:
* 不给定参数,正常中英混
* zh-cn 中文为主,支持中英混
* en 仅英文
context_language参考语种2string给模型提供参考的语种
* 不给定 西欧语种采用英语
* id 西欧语种采用印尼
* es 西欧语种采用墨西
* pt 西欧语种采用巴葡
loudness_ratio音量调节2float[0.5,2],默认为1,通常保留一位小数即可。0.5代表原音量0.5倍,2代表原音量2倍
request请求相关配置1dict
reqid请求标识2string需要保证每次调用传入值唯一,建议使用 UUID
text文本2string合成语音的文本,长度限制 1024 字节(UTF-8 编码)建议小于300字符,超出容易增加badcase出现概率或报错
model模型版本\
2\
string模型版本,传seed-tts-1.1较默认版本音质有提升,并且延时更优,不传为默认效果。
注:若使用1.1模型效果,在复刻场景中会放大训练音频prompt特质,因此对prompt的要求更高,使用高质量的训练音频,可以获得更优的音质效果。
text_type文本类型2string使用 ssml 时需要指定,值为”ssml”
silence_duration句尾静音2float设置该参数可在句尾增加静音时长,范围0~30000ms。(注:增加的句尾静音主要针对传入文本最后的句尾,而非每句话的句尾)若启用该参数,必须在request下首先设置enable_trailing_silence_audio = true
with_timestamp时间戳相关2int\
string传入1时表示启用,将返回TN后文本的时间戳,例如:2025。根据语义,TN后文本为“两千零二十五”或“二零二五”。
注:原文本中的多个标点连用或者空格仍会被处理,但不影响时间戳的连贯性(仅限大模型场景使用)。
附加说明(小模型和大模型时间戳原理差异):
1. 小模型依据前端模型生成时间戳,然后合成音频。在处理时间戳时,TN前后文本进行了映射,所以小模型可返回TN前原文本的时间戳,即保留原文中的阿拉伯数字或者特殊符号等。
2. 大模型在对传入文本语义理解后合成音频,再针对合成音频进行TN后打轴以输出时间戳。若不采用TN后文本,输出的时间戳将与合成音频无法对齐,所以大模型返回的时间戳对应TN后的文本。
operation操作2stringquery(非流式,http 只能 query) / submit(流式)
extra_param附加参数2jsonstring
disable_markdown_filter3bool是否开启markdown解析过滤,
为true时,解析并过滤markdown语法,例如,你好,会读为“你好”,
为false时,不解析不过滤,例如,你好,会读为“星星‘你好’星星”
示例:“disable_markdown_filter”: True
enable_latex_tn3bool是否可以播报latex公式,需将disable_markdown_filter设为true
示例:“enable_latex_tn”: True
latex_parser\
3string是否使用lid 能力播报latex公式,相较于latex_tn 效果更好;
值为“v2”时支持lid能力解析公式,值为“”时不支持lid;
需同时将disable_markdown_filter设为true;
mute_cut_remain_ms句首静音参数3string该参数需配合mute_cut_threshold参数一起使用,其中:
“mute_cut_threshold”: “400”, // 静音判断的阈值(音量小于该值时判定为静音)
“mute_cut_remain_ms”: “50”, // 需要保留的静音长度
注:参数和value都为string格式
以python为示例:
```Python
“extra_param”:(”{“mute_cut_threshold”:“400”, “mute_cut_remain_ms”: “0”}”)
```
特别提醒:
* 因MP3格式的特殊性,句首始终会存在100ms内的静音无法消除,WAV格式的音频句首静音可全部消除,建议依照自身业务需求综合判断选择
disable_emoji_filteremoji不过滤显示3bool开启emoji表情在文本中不过滤显示,默认为False,建议搭配时间戳参数一起使用。
Python示例:"extra_param": json.dumps({"disable_emoji_filter": True})
unsupported_char_ratio_thresh不支持语种占比阈值3float默认: 0.3,最大值: 1.0
检测出不支持合成的文本超过设置的比例,则会返回错误。
Python示例:"extra_param": json.dumps({"unsupported_char_ratio_thresh": 0.3})
aigc_watermark是否在合成结尾增加音频节奏标识3bool默认: false
Python示例:"extra_param": json.dumps({"aigc_watermark": True})
cache_config缓存相关参数3dict开启缓存,开启后合成相同文本时,服务会直接读取缓存返回上一次合成该文本的音频,可明显加快相同文本的合成速率,缓存数据保留时间1小时。
(通过缓存返回的数据不会附带时间戳)
Python示例:"extra_param": json.dumps({"cache_config": {"text_type": 1,"use_cache": True}})
text_type缓存相关参数4int和use_cache参数一起使用,需要开启缓存时传1
use_cache缓存相关参数4bool和text_type参数一起使用,需要开启缓存时传true

备注:

  1. 已支持字级别时间戳能力(ssml文本类型不支持)
  2. ssml 能力已支持,详见 SSML 标记语言—豆包语音-火山引擎 (volcengine.com) 
  3. 暂时不支持音高调节
  4. 大模型音色语种支持中英混
  5. 大模型非双向流式已支持latex公式
  6. 在 websocket/http 握手成功后,会返回这些 Response header

| | | | \

Key说明Value 示例
X-Tt-Logid服务端返回的 logid,建议用户获取和打印方便定位问题,使用默认格式即可,不要自定义格式202407261553070FACFE6D19421815D605

请求示例:

{ "app": { "appid": "appid123", "token": "access_token", "cluster": "volcano_tts", }, "user": { "uid": "uid123" }, "audio": { "voice_type": "zh_male_M392_conversation_wvae_bigtts", "encoding": "mp3", "speed_ratio": 1.0, }, "request": { "reqid": "uuid", "text": "字节跳动语音合成", "operation": "query", } }

返回参数

| | | | | | \

字段含义层级格式备注
reqid请求 ID1string请求 ID,与传入的参数中 reqid 一致
code请求状态码1int错误码,参考下方说明
message请求状态信息1string错误信息
sequence音频段序号1int负数表示合成完毕
data合成音频1string返回的音频数据,base64 编码
addition额外信息1string额外信息父节点
duration音频时长2string返回音频的长度,单位 ms

响应示例

{ "reqid": "reqid", "code": 3000, "operation": "query", "message": "Success", "sequence": -1, "data": "base64 encoded binary data", "addition": { "duration": "1960", } }

注意事项

  • websocket 单条链接仅支持单次合成,若需要合成多次,则需要多次建立链接
  • 每次合成时 reqid 这个参数需要重新设置,且要保证唯一性(建议使用 uuid.V4 生成)
  • operation 需要设置为 submit

返回码说明

| | | | | \

错误码错误描述举例建议行为
3000请求正确正常合成正常处理
3001无效的请求一些参数的值非法,比如 operation 配置错误检查参数
3003并发超限超过在线设置的并发阈值重试;使用 sdk 的情况下切换离线
3005后端服务忙后端服务器负载高重试;使用 sdk 的情况下切换离线
3006服务中断请求已完成/失败之后,相同 reqid 再次请求检查参数
3010文本长度超限单次请求超过设置的文本长度阈值检查参数
3011无效文本参数有误或者文本为空、文本与语种不匹配、文本只含标点检查参数
3030处理超时单次请求超过服务最长时间限制重试或检查文本
3031处理错误后端出现异常重试;使用 sdk 的情况下切换离线
3032等待获取音频超时后端网络异常重试;使用 sdk 的情况下切换离线
3040后端链路连接错误后端网络异常重试
3050音色不存在检查使用的 voice_type 代号检查参数

常见错误返回说明

  1. 错误返回: “message”: “quota exceeded for types: xxxxxxxxx_lifetime” 错误原因:试用版用量用完了,需要开通正式版才能继续使用
  2. 错误返回: “message”: “quota exceeded for types: concurrency” 错误原因:并发超过了限定值,需要减少并发调用情况或者增购并发
  3. 错误返回: “message”: “Fail to feed text, reason Init Engine Instance failed” 错误原因:voice_type / cluster 传递错误
  4. 错误返回: “message”: “illegal input text!” 错误原因:传入的 text 无效,没有可合成的有效文本。比如全部是标点符号或者 emoji 表情,或者使用中文音色时,传递日语,以此类推。多语种音色,也需要使用 language 指定对应的语种
  5. 错误返回: “message”: “authenticate request: load grant: requested grant not found” 错误原因:鉴权失败,需要检查 appid&token 的值是否设置正确,同时,鉴权的正确格式为 headers[“Authorization”] = “Bearer;${token}”
  6. 错误返回: “message’: ‘extract request resource id: get resource id: access denied” 错误原因:语音合成已开通正式版且未拥有当前音色授权,需要在控制台购买该音色才能调用。标注免费的音色除 BV001_streaming 及 BV002_streaming 外,需要在控制台进行下单(支付 0 元)
Last updated on